package assignment5;
import java.util.ArrayList;

public class SmartPlayer extends ComputerPlayer{
	
	public SmartPlayer(){
		super("SuperComputer" + getCount());
	}
	
//	public void CardChecker(PlayerPot pot){
//		ArrayList<Integer> CardMemory = new ArrayList<Integer>();
//		CardMemory.add(pot.getUpCard());
//	}
	
	@Override
	public Move makeAmove(PlayerPot pot){
		
		int NumberOfCard = pot.getUpCard();
		int NumberOfChips = pot.getNumChips();
		ArrayList<Integer> memory = new ArrayList<Integer>();
		
		memory.add(NumberOfCard);
		if (this.getNumChips() == 0){
			return Move.takeIt;
		}
		if(NumberOfChips >= NumberOfCard){
			return Move.takeIt;
		}
		if(this.getCards().size() > 0){
			for(int i = 0; i < this.getCards().size(); ++i){
				if(NumberOfCard == this.getCards().get(i) - 1){
					if(NumberOfChips > 0){
						return Move.takeIt;
					}
				}
				else if(NumberOfCard == this.getCards().get(i) + 1){
					if(NumberOfChips > 0){
						return Move.takeIt;
					}
				}
			}
		}
		if(this.getCards().size() > 0 && memory.size() > 0){
			for(int j = 0; j < this.getCards().size(); ++j){
				if(NumberOfCard == this.getCards().get(j) - 2){
					for(int k = 0; k < memory.size(); ++k){	
						if(NumberOfCard != memory.get(k) + 1){
							if(NumberOfChips >= 0){
								return Move.takeIt;
							}
						}	
					}
				}
				else if(NumberOfCard == this.getCards().get(j) + 2){
					for(int l = 0; l <memory.size(); ++l){
						if(NumberOfCard != memory.get(l) - 1){
							if(NumberOfChips >= 0){
								return Move.takeIt;
							}
						}
					}
				}
			}
		}
		if(NumberOfCard <= 7 && NumberOfChips >= 2){
			return Move.takeIt;
		}
		if(this.getNumChips() < 5){
			if(NumberOfChips > 2){
				if(NumberOfCard < 10){
					return Move.takeIt;
				}
			}
			else if(NumberOfChips > 4){
				if(NumberOfCard < 19){
					return Move.takeIt;
				}
			}
		}
		if(NumberOfCard > 30 && NumberOfChips >= 21){
			return Move.takeIt;
		}
		if(NumberOfCard >= 25 && NumberOfCard <= 30){
			if(NumberOfCard >= 25 && NumberOfCard < 27){
				if(NumberOfChips >= 17){
					return Move.takeIt;
				}
			}
			else if (NumberOfCard >= 27 && NumberOfCard <= 30){
				if(NumberOfChips >= 20){
					return Move.takeIt;
				}
			}
		}
		if(NumberOfCard >= 20 && NumberOfCard < 25){
			if(NumberOfCard >= 20 && NumberOfCard < 23){
				if(NumberOfChips >= 12){
					return Move.takeIt;
				}
			}
			else if (NumberOfCard >= 23 && NumberOfCard <= 25){
				if(NumberOfChips >= 15){
					return Move.takeIt;
				}
			}
		}
		if((NumberOfCard >= 14 && NumberOfCard < 20)){
			if(NumberOfCard >= 14 && NumberOfCard < 17){
				if(NumberOfChips >= 7){
					return Move.takeIt;
				}
			}
			else if (NumberOfCard >= 17 && NumberOfCard <= 20){
				if(NumberOfChips >= 10){
					return Move.takeIt;
				}
			}
		}
		if((NumberOfCard >= 8 && NumberOfCard < 14)){
			if(NumberOfCard >= 8 && NumberOfCard < 11){
				if(NumberOfChips >= 4){
					return Move.takeIt;
				}
			}
			else if (NumberOfCard >= 11 && NumberOfCard <= 14){
				if(NumberOfChips >=6){
					return Move.takeIt;
				}
			}
		}
//		else if(NumberOfCard <= 16 && NumberOfChips > 6){
//			return Move.takeIt;
//		}
//		else if(NumberOfCard >= 8){
//		}
		return Move.noThanks;
	}
	

}
